This invention relates, in general, to switching server versions in a distributed environment and, in particular, to providing continuous server service to client calls when switching from a current server version to a new server version.
In a distributed environment, socket-based server applications or remote procedure call (RPC) servers are generally arranged to receive and subsequently process remotely-made client calls. Typical RPC servers allow for numerous client TCP/IP (Transmission Control Protocol/Internet Protocol) network connections and are implemented to address a large number of client requests. A typical arrangement for these servers is to establish a local network representation by binding a socket to a fixed port which allows client calls to be received by the server.
From time to time, the servers are required to be updated from a current server version to a new server version in order to enhance server functionality or to address any server problems. These updates are performed by first shutting down the current server version, and subsequently starting the new server version. However, client requests cannot be processed immediately after the current server version stops listening for client requests and closes its socket. Per TCP/IP architecture, before the socket may close, it must wait for a period of time before allowing the local network representation.(i.e., the local IP address and port number) to be reused. This prevents the new server version from immediately binding again to the same fixed port number. Only when the new server version is able to bind to the port number and listen for client calls on the socket can the server process client requests. As a result, any client calls received during this time are unable to be processed by either the current server version or the new server version. Thus, client calls received during this time are not processed and are instead returned to the clients with an error message indicating that the server is not available.
In mission critical systems, running twenty-four hours a day, seven days a week, continuous service is vital and such a loss of service is not tolerable. Thus a need exists for a system and a method which provide continuous server service during switching from a current server version to a new server version in a distributed environment.
The shortcomings of the prior art are overcome to some extent through provision of an address reuse socket option which has been implemented to allow the socket associated with the current server version to be reused by the new server version without having to wait for the socket to completely time out. Thus with the address reuse socket option, client calls may be received immediately after the new server version has completed its start up procedures.
Additional shortcomings of the prior art are overcome and further advantages are provided through the provision of a method of providing continuous server service during switching from a current server version to a new server version in a distributed environment. The current server version receives client calls through an associated static port with a socket bound thereto. The method includes: initiating switching from the current server version to the new server version while maintaining the socket open for receiving client calls; buffering any received client calls during switching from the current server version to the new server version; and upon switching to the new server version, processing any buffered client calls.
In another aspect of the invention, a method of providing continuous server service during switching from a current server version to a new server version, in a distributed environment, is disclosed. The current server version receives client calls through an associated static port with a socket bound thereto. The method includes: receiving client calls during switching from the current server version to the new server version by leaving the socket open; associating the static port with the socket bound thereto with the new server version; and processing by the new server version, any client calls received during switching so that no client calls are lost.
In yet another aspect of the invention, a system capable of providing continuous server service during switching from a current server version to a new server version, in a distributed environment is disclosed. The a system includes: a server having a static port with a socket bound thereto which is associated with the current server version, the server being operable to leave the socket open when the current server version is switched to the new server version so that the server is able to continue to receive client calls received through the socket during switching, the server further comprising a buffer adapted to queue client calls received during switching from the current server version to the new server version, wherein the server is adapted to have the new server version process any queued client calls received during switching after switching to the new server is complete.
In yet another aspect of the invention, a system for providing continuous server service during switching from a current server version to a new server version, in a distributed environment is disclosed. The current server version receives client calls through an associated static port with a socket bound thereto. The system includes: means for initiating switching from the current server version to the new server version while maintaining the socket open for receiving client calls; means for buffering any received client calls during switching from the current server version to the new server version; and means for processing, upon switching to the new server version, any buffered client calls.
In yet another aspect of the invention, a system for providing continuous server service during switching from a current server version to a new server version, in a distributed environment is disclosed. The current server version receives client calls through an associated static port with a socket bound thereto. The system includes: means for receiving client calls during switching from the current server version to the new server version by leaving the socket open; means for associating the static port with the socket bound thereto with the new server version; and
means for processing, by the new server version, any client calls received during switching so that no client calls are lost.
In yet another aspect of the invention, an article of manufacture is provided. The article of manufacture comprises a computer useable medium having computer readable program code means embodied therein causing the providing of continuous server service during switching from a current server version to a new server version, in a distributed environment, where the current server version receives client calls through an associated static port with a socket bound thereto. The computer readable program code means in the article of manufacture includes: computer readable program code means for causing initiating switching from the current server version to the new server version while maintaining the socket open for receiving client calls; computer readable program code means for causing buffering of any received client calls during switching from the current server version to the new server version; and computer readable program code means for causing, upon switching to the new server version, processing of any buffered client calls.
In yet another aspect of the invention, an article of manufacture is provided. The article of manufacture comprises a computer useable medium having computer readable program code means embodied therein causing the providing of continuous server service during switching from a current server version to a new server version, in a distributed environment, where the current server version receives client calls through an associated static port with a socket bound thereto. The computer readable program code means in the article of manufacture includes: computer readable program code means for causing receiving client calls during switching from the current server version to the new server version by leaving the socket open; computer readable program code means for causing associating of the static port with the socket bound thereto with the new server version; and computer readable program code means for causing processing, by the new server version, of any client calls received during switching so that no client calls are lost.
Thus, presented herein is a method and system for providing continuous server service during switching from a current server version to a new server version. In order to provide such continuous server service the method and the system leave open sockets associated with the current server version during switching from the current server version to the new server version so that client calls made during switching continue to be received. In addition, leaving open the socket associated with the current server version allows the new server version to utilize the socket without having to perform standard startup procedures. Furthermore, any client calls received during switching are buffered so that they may be subsequently processed by the new server version upon completion of switching. By buffering the client calls made during switching and subsequently processing the buffered client calls, no client calls are returned with error messages to their respective clients. Hence, in the present invention, no client calls are lost during switching and, as a result, server versions may be updated to enhance functionality and to address server problems with the appearance of continuous server service.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.